from PySide6 import QtCore
from PySide6.QtCore import Qt
from PySide6.QtWidgets import (QDialog, QGroupBox, QPushButton, QHBoxLayout, QTextEdit, 
                             QVBoxLayout, QGridLayout)
from PySide6.QtGui import QIcon
import setting as c

class SFormDisclaimer(QDialog):

    def __init__(self, father):
        super().__init__()
        
        self.father = father
        
        self.setWindowIcon(QIcon(c.icon_dir_path))
        self.setWindowFlags(self.windowFlags() | Qt.WindowStaysOnTopHint)
        
        self.initUI()
        self.ok = False
        
        # 计算并设置新窗口的位置
        self.setGeometry(0, 0, 300, 130)
        self.move(father.frameGeometry().topLeft() + father.rect().center() - self.rect().center())
        
     # 绘制界面
    def initUI(self):
        
        self.CreateWindowCommbo()
        
        gridLayout = QGridLayout() 
        gridLayout.addWidget(self.vWinGroupBox, 0, 0, QtCore.Qt.AlignLeft)
        
        # 调用方法绘制界面
        self.setWindowTitle(c.WINTITLE)
        mainLayout = QHBoxLayout()
        mainLayout.addLayout(gridLayout)
        self.setLayout(mainLayout)
        
    def CreateWindowCommbo(self):
        layout_outter = QVBoxLayout()
                
        self.vWinGroupBox = QGroupBox('免责声明')
        self.vWinGroupBox.setMinimumSize(c.win_width-60, 300)
    
        
        layout = QHBoxLayout()
        self.dc_qe = QTextEdit()
        self.dc_qe.setReadOnly(True)
        self.dc_qe.setText("""<h2 style="text-align: center;">软件使用免责声明</h2>

<p>请仔细阅读本免责声明（以下简称“声明”）。通过访问、下载、安装或使用（以下统称为“使用”）本软件（以下简称“软件”），您表明您已阅读、理解并同意受本声明的约束。如果您不同意本声明的条款，请不要使用本软件。</p>

<h3>许可范围</h3>
<ul>
<li>本软件授权给您作为个人用户使用，仅供非商业性质的个人使用，不得用于任何商业目的。</li>
</ul>

<h3>知识产权</h3>
<ul>
<li>本软件及其所有内容，包括但不限于文本、图像、音频、视频、源代码和界面设计等均受版权、商标和其他知识产权法律的保护。未经软件所有者明确书面同意，您不得以任何形式复制、修改、出租、出借、出售、散布本软件及其任何部分。</li>
</ul>

<h3>免责声明</h3>
<ul>
<li>本软件是按“现状”提供的，不提供任何形式的明示或暗示的保证，包括但不限于对适销性、特定用途的适用性或非侵权性的保证。软件开发者或版权所有者不对软件的使用效果、兼容性、稳定性等做任何形式的保证或承诺。</li>
</ul>

<h3>责任限制</h3>
<ul>
<li>在任何情况下，软件开发者或版权所有者均不对因使用或无法使用本软件所产生的直接、间接、偶然、特殊或后果性损害负责，包括但不限于业务中断、数据丢失或利润损失，即使已被告知此类损害的可能性。</li>
</ul>

<h3>风险承担</h3>
<ul>
<li>您理解并同意您对使用本软件承担全部风险，对于因使用本软件造成的设备故障、数据丢失或其他任何形式的损失和伤害，软件开发者或版权所有者不承担任何责任。</li>
</ul>

<h3>修改和终止</h3>
<ul>
<li>软件所有者保留随时修改本声明内容的权利，且无需另行通知。您继续使用软件将被视为接受了这些修改。软件所有者也保留随时终止本软件服务的权利。</li>
</ul>

<h3>适用法律</h3>
<ul>
<li>本声明的解释和适用以及与本声明相关的争议解决均适用[您所在地的法律/软件所有者所在地的法律]。</li>
</ul>

<p>通过使用本软件，您同意上述条款和条件。</p>""")
        
        layout.addWidget(self.dc_qe)
        layout_outter.addLayout(layout)
    
        
        layout = QHBoxLayout()
        self.ok_btn = QPushButton('同意', self)
        self.ok_btn.clicked.connect(self.onclick_ok)
        self.cancel_btn = QPushButton("拒绝", self)
        self.cancel_btn.setStyleSheet('QPushButton {color: red;}')
        self.cancel_btn.clicked.connect(self.onclick_cancel)
        layout.addWidget(self.ok_btn, 1)
        layout.addWidget(self.cancel_btn, 1)
        layout_outter.addLayout(layout)
    
        self.vWinGroupBox.setLayout(layout_outter)
        
    
    def closeEvent(self, event):
            
        # 调用父类的closeEvent方法，确保窗口能够正常关闭
        super().closeEvent(event)
        if not self.ok:
            self.father.close()
        
    def onclick_ok(self):
        self.ok = True
        self.close()
        
    def onclick_cancel(self):
        self.close()
        self.father.close()
        
    
    
    
    